const express = require('express');
const router = module.exports = express.Router();
const userController = require('../controller/userController');
const {
    check,
    checkSchema,
    checkArgsEmpty,
    validErrMsg
} = require('../util/validator');

const {
    checkToken
} = require('../middlewares/checkToken');

const upload = require('../util/uploads').single('file');

// 文件上传类型验证
const typeCheck = (req, res, next) => {
    upload(req, res, err => {
        if (err) {
            return res.status(400).send({
                code: 400,
                msg: "文件类型不对，请检查"
            });
        }
        next()
    })
};



router
    // .get('/test', userController.test) //测试
    //登录功能
    .post('/login',
        checkArgsEmpty(['username', 'password']), //检验是否为空
        validErrMsg, //输出错误信息
        userController.login)
    // 注册功能
    .post('/register',
        [check('username').isLength({
                min: 5
            }).withMessage('用户名至少5位'),
            check('password').isLength({
                min: 3
            }).withMessage('密码至少3位'),
            check('nickname').notEmpty()
        ],
        validErrMsg,
        userController.register)
    //获取用户详情
    .get('/user/:id',
        checkToken, //验证token
        userController.getUser)
    //更新用户信息
    .post('/user_update/:id',
        checkToken,
        userController.user_update
    )
    //关注用户
    .get('/user_follows/:id',
        checkToken,
        userController.user_follow)
    //取消用户关注
    .get('/user_unfollow/:id',
        checkToken,
        userController.user_unfollow)
    // 获取关注列表
    .get('/user_follows',
        checkToken,
        userController.getFollowList)
    //获取用户评论列表
    .get('/user_comments',
        checkToken,
        userController.getCommentList)
    //获取用户收藏文章列表
    .get('/user_star',
        checkToken,
        userController.getStarList)
    //文件上传接口
    .post('/upload',
        typeCheck, //检测文件类型
        checkToken, //检测token
        userController.upload
    )
    //收藏文章
    .get('/post_star/:id', checkToken, userController.post_star)
    //点赞文章
    .get('/post_like/:id', checkToken, userController.post_like)
    //发表评论
    .post('/post_comment/:id', checkToken, userController.post_comment)
    //文章发表
    .post('/post', checkToken, userController.publishPost)
    //编辑文章
    .post('/post_update/:id', checkToken, userController.post_update)